/*
 * include.h
 * projet Unix: 6 qui prend
 *
 *  @authors Doublier Sami
 *  @authors Pingot Alexandre
 */

#if !defined (_INCLUDE_H_)
#define _INCLUDE_H_
#include <fcntl.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ipc.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <sys/sem.h>
#include <sys/time.h>
#include <time.h>
#include <netinet/in.h>
#include <netdb.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/uio.h>
#include <sys/wait.h>
#include <sys/select.h>
#include <sys/un.h>
#include <unistd.h>
#include <signal.h>
#include <regex.h>


#define CARTES_LIGNE 4
#define CARTES_COLONNE 6

/******************************* TIMER ****************************************/
#define CONNEXION_TIMEOUT 10 /* Temps d'acceptation du premier joueur TODO valeur de base: 30*/
#define TIMEOUT_CLI 20 /* Temps que le client a pour introduire son nom TODO valeur de base: 60*/
/*#define NOM_TIMEOUT_SERV 40 ||| Temps que le serveur attend pour la réception des noms TODO valeur de base: 40 */

/*
#define CHOSE_TIMEOUT 3000
#define WAIT_DELAY 15
*/
/******************************************************************************/

#define LOCK "lockServeur"
/*
#define LISTENQ 128
*/
/*#define DIFF_CONFIG 4
#define DIFF_REPARTITION 3*/
#define MAXLINE 1024
/*
#define REPONSE 133
*/

#define MAX_JOUEURS 10
#define LONG_NOM 56
#define MINPLAYERS 2 /*A remplacer par MIN_PLAYERS 2*/
#define CARTE_SEPARATEUR ":"
#define NBRE_CARTES_PAR_JOUEURS 10
/*

#define BUFFSIZE 128

#define PION_NON_TROUVE "?"
*/
#define SERV_LOCK 90
/*
#define SERV_CREATE_LOCK 91
#define MAX_FDP1 5
#define NEW_GAMER 2

*/


/***********************************MESSAGES***********************************/

#define SEMAPHORE_SET_ID 20   /* signifie qu'on reçoit le semaphoreSetID */

#define SHARED_MEM 22      /* signifie qu'on reçoit le semaphoreSetID */
#define SHARED_MEM_RC 23
#define CARTES_RECUES 10   /*signifie qu'on reçoit les cartes du joueur*/

#define BIENVENUE 88
/*
#define DISTRIBUTION 2
*/
#define MESSAGE 111 /* Type tous les messages de type texte */
#define CLOSE 33
/*
#define BEGIN 5
*/
#define NUMERO 6

#define NOM 8
#define CARTE 11

#define AFFICHER_POINTS 14
#define CHOIX_RANGEE 16
/* #define RATE 93 */

/*
#define TROUVE 12  le joueur a trouvé un de ses pions
#define EFFACER_PION 13
*/
#define GAGNANT_PARTIE 15
#define POINT_POUR_TERMINER_PARTIE 20 /*remettre à la valeur initiale: 66*/
#define GAGNANT_PAR_DEFAUT 1  /* un joueur a gagné, on avertit les autres joueurs */


/********************************AFFICHAGE*************************************/

#define SEPARATEUR "\n********************************************************************************\n"

/******************************************************************************/
#define MAX_CARTES_PAR_JOUEUR 10 /* nombre de cartes max par joueur*/
#define TOTAL_CARTES 104 /* nombre total de cartes */
#define VIDE 0
#define VIDE2 0
/*

#define REPARTITION "777770544444"
*/

/***********************************MACRO**************************************/
/* Macro de base pour tester un appel système */
#define SYS(call) if((call) == -1) \
{perror(#call " :Error "); exit(1);}

/* Macro pour tester un appel système signal */
#define SYSS(call) if((call) == -1) \
{perror(#call " :Error "); kill(getpid(),SIGINT);}

/* Macro pour tester si une mémoire partagée  est bien initialisée */
#define SYSM(call) if((call) == NULL) \
{perror(#call " :Error "); kill(getpid(),SIGINT);}
/* #define SYS(call) (((call) == -1) ? (perror(#call " :Error "),exit(1)) :0) */
#endif
